#include <iostream>
#include <string>
using namespace std;
/*
给你一个整数 n ，请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位数字。

 

示例 1：

输入：n = 3
输出：3
示例 2：

输入：n = 11
输出：0
解释：第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ，它是 10 的一部分。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/nth-digit
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
//傻逼出题人，说白了就是找数字合并起来形成字符串的第n个位置的字符
class Solution {
public:
    int findNthDigit(int n)
    {
        int k=1,w=1;
        while(n>(long long)9*k*w)
        {
            n-=(long long)9*k*w;
            k++;
            w*=10;
        }
        int x=(n-1)/k+w;
        return to_string(x)[(n-1)%k]-'0';
    }
};